<#import "tag.ftl" as component/>

<#--
	分页标签：用于显示数据分页链接。
	pagination：分页对象。
	formId：搜索表单Id 默认为searchForm
	pagerId:分页标签Id 默认为J_pager
	showPageLinkCount:显示的页数链接数
	isShowMoreLI:是否显示“<li>...</li>”提示更多还有更多页数
	isNeedPageTo：是否显示转到指定页数的表单
	hasTip:是否显示提示
-->
<#macro pager pagination formId="searchForm" pagerId="J_pager" showPageLinkCount=5 isShowMoreLI=false isNeedPageTo=true hasTip=false>
	<#assign href="javascript:void(0);">
	<#if (pagination.totalPage)??>
		<#if (pagination.totalPage>=1)>
			<#assign firstPageNo="1">
			<#assign prePageNo=(pagination.pageNo-1)>
			<#assign nextPageNo=(pagination.pageNo+1)>
			<#assign lastPageNo=pagination.totalPage>

			<ul class="pager" id="${pagerId}">
				<input type="hidden" id="${pagerId}_formIdHide" value="${formId}"/>
				<input type="hidden" id="${pagerId}_totalPageHide" value="${lastPageNo}"/>
				<#if (pagination.pageNo>1)>
					<li class="firstPage">
						<a id="${firstPageNo}" href="${href}">首页</a>
					</li>
				<#else>
					<li class="firstPage d">
						<span>首页</span>
					</li>
				</#if>
				
				<#if (pagination.pageNo>1)>
					<li class="prePage">
						<a id="${prePageNo}" href="${href}">上一页</a>
					</li>
				<#else>
					<li class="prePage d">
						<span>上一页</span>
					</li>
				</#if>

				<@outPutPageNo pagination=pagination url=href showPageLinkCount=showPageLinkCount isShowMoreLI=isShowMoreLI/>

				<#if (pagination.pageNo<pagination.totalPage)>
					<li class="nextPage">
						<a id="${nextPageNo}" href="${href}">下一页</a>
					</li>
				<#else>
					<li class="nextPage d">
						<span>下一页</span>
					</li>
				</#if>
				
				<#if (pagination.pageNo<pagination.totalPage)>
					<li class="lastPage">
						<a id="${lastPageNo}" href="${href}">尾页</a>
					</li>
				<#else>
					<li class="lastPage d">
						<span>尾页</span>
					</li>
				</#if>

				<li class="pageInfo">
					共 ${pagination.totalPage} 页
				</li>

				<#if isNeedPageTo && (pagination.totalPage>1)>
					<li class="pageTo">
						<form id="${pagerId}_pagerForm" action="#">
							<span class="l">转到第&nbsp;</span>
							<input type="text" id="${pagerId}_pageToNum" name="page" class="l pageToNum"/>
							<span class="l">&nbsp;页</span>
							<input type="submit" id="submitButton4Page" class="l normalBtn formButton" value="确定" hidefocus="true">
						</form>
					</li>
				</#if>
				
				<#if hasTip>
					<li class="imgBg tip"><a href="#"></a></li>
				</#if>
			</ul>
			<@component.blank/>
		</#if>
	</#if>
</#macro>

<#--
	简单分页标签：只显示 上一页、下一页。
	pagination：分页对象。
	pagerId:分页标签Id 默认为J_pagerSimple
	prePageClass：上一页样式
	nextPageClass：下一页样式
	prePageDisableClass：上一页不可用样式
	nextPageDisableClass：下一页不可用样式
-->
<#macro pagerSimple pagination pagerId="J_pagerSimple" prePageClass="l bg p_l" nextPageClass="l bg p_r" prePageDisableClass="l bg p_l_d" nextPageDisableClass="l bg p_r_d">
	<#assign href="javascript:void(0);">
	<#if (pagination.totalPage)?? && (pagination.totalPage>1)>
		<#assign prePageNo=(pagination.pageNo-1)>
		<#assign nextPageNo=(pagination.pageNo+1)>
		
		<div id="${pagerId}">
			<#if (pagination.pageNo>1)>
				<a id="${prePageNo}" href="${href}" class="${prePageClass}">上一页</a>
			<#else>
				<span class="${prePageDisableClass}">上一页</span>
			</#if>

			<#if (pagination.pageNo<pagination.totalPage)>
				<a id="${nextPageNo}" href="${href}" class="${nextPageClass}">下一页</a>
			<#else>
				<span class="${nextPageDisableClass}">下一页</span>
			</#if>
		</div>
	</#if>
</#macro>

<#--
	输出分页链接。如果当前页超过 显示的页数链接数 的一半，则当前页居中显示。例如：当前第10页，总共20页，那么显示第6~第15页分页链接，且第10页居中。
	pagination：分页对象。
	url：链接地址
	showPageLinkCount:显示的页数链接数
	isShowMoreLI:是否显示“<li>...</li>”提示更多还有更多页数0
-->
<#macro outPutPageNo pagination url showPageLinkCount isShowMoreLI>
	<#--
		└────────────────────────────────────────────────┘
		A												 B

		└───────┴────────┘
		A1		PageNo	B1

		A->B:totalPage
		A1:startIndex
		B1:endIndex
		A1->B1:showPageLinkCount
		A1->PageNo:spaceOFStartIndexToPageNo
		A1->B1 -1:spaceOFStartIndexToPageLinkCount
	-->

	<#if (showPageLinkCount%2==1)>
		<#assign spaceOFStartIndexToPageNo=((showPageLinkCount+1)/2)-1>
	<#else>
		<#assign spaceOFStartIndexToPageNo=(showPageLinkCount/2)-1>
	</#if>

	<#assign spaceOFStartIndexToPageLinkCount=(showPageLinkCount-1)>

	<#if ((pagination.pageNo-spaceOFStartIndexToPageNo) <= 1) || (pagination.totalPage<=showPageLinkCount)>
		<#assign startIndex=1>
		<#assign isNeedStartMore=false>
	<#else>
		<#assign startIndex=(pagination.pageNo-spaceOFStartIndexToPageNo)>
		<#assign isNeedStartMore=true>
	</#if>

	<#if ((startIndex+spaceOFStartIndexToPageLinkCount) < pagination.totalPage)>
		<#assign endIndex=startIndex+spaceOFStartIndexToPageLinkCount>
		<#assign isNeedEndMore=true>
	<#else>
		<#assign endIndex=(pagination.totalPage)>
		<#assign isNeedEndMore=false>
	</#if>

	<#if isNeedStartMore&&isShowMoreLI><li>...</li></#if>
	<#list startIndex..endIndex as i>
		<#if pagination.pageNo != i>
			<li>
				<a id="${i}" href="${url}">${i}</a>
			</li>
		<#else>
			<li class="currentPage">
				<span>${i}</span>
			</li>
		</#if>
	</#list>
	<#if isNeedEndMore&&isShowMoreLI><li>...</li></#if>
</#macro>